package com.smedi.ismedi.authoritymanagement.core.application.service;

import com.smedi.ismedi.authoritymanagement.core.application.query.vo.FrameStructureVo;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.AuthorityAccess;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.AuthorityInfo;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.FrameStructure;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.NodeInfo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * @Author: xulinjun
 * @Date: 2021-7-2 10:39
 */
public interface ClientLoginApplicationService {
    AuthorityAccess pcLogin(String account, String password,String clientId);

    AuthorityAccess mobileLogin(String account, String password,String clientId);

    void loginOut(String token);

    AuthorityAccess validateTokenAndGetAuthorityAccessAndRefreshExpress(String token);

    void boundDataPermissionScope(String token, Map<String, List<Long>> maps);

    List<Long> getStructureIdsByScope(String rootCode, List<FrameStructure> children);

    FrameStructureVo getMenuInfrastructureByScope(String rootCode, List<Long> scopes);

    FrameStructureVo getMenuInfrastructureByScopeNew(String rootCode, List<Long> scopes,List<FrameStructure> children);

    List<String> queryMenuInfrastructureRoutersByScope(String rootCode, List<Long> scopes,List<FrameStructure> children);

    AuthorityAccess pcLoginFast(String account, String password);

    AuthorityAccess mobileLoginFast(String account, String password,String clientId);

    AuthorityInfo getInitScopeTopPermissionInfo(String device);

    AuthorityInfo getCurrentScopeTopPermissionInfo();

    List<FrameStructure> getAllChildren();
}
